{{tag>bionic portable}}

----

======  Lenovo Yoga 7i (& Yoga 7) - 14ITL5 & 15ITL5  ======
Le dump du BIOS indique les réferences 14ITL05 & 15ITL05, mais ces références semble appartenir à d'autres modèles. Peut-être cela peut fonctionner ou vous aider.

===== En un clin d’œil =====
Le tableau suivant récapitule la prise en charge du matériel de portable par les différentes versions d'Ubuntu.
Il utilise les notations suivantes :
  * {{:icons:ok_32.png|OK 32 bits}} **Fonctionne immédiatement en 32 bits.**
  * {{:icons:ok_64.png|OK 64 bits}} **Fonctionne immédiatement en 64 bits.**
  * {{:icons:ok_32_64.png|32 et 64 bits}} **Fonctionne immédiatement en 32 et 64 bits.**
  * {{wiki:modeles:laptop_work.png|Fonctionne après config}} **Fonctionne après quelques manipulations**
  * {{wiki:modeles:laptop_notok.png|Ne fonctionne pas}} **Ne fonctionne pas**
  * {{:laptop_help.png||Pas testé}} **Pas d'informations disponibles**
  * {{:icons:edit-clear.png?32|Information obsolète}} **Information de support trop ancienne**, si possible mettez là à jour.

Ce portable est parfois appelé Yoga 7i ou Yoga 7 (ce n'est pas très claire), et a les références 14ITL5 pour le 14 pouces et 15ITL5 pour le 15 pouces.

^ Version ^ Installation ^ Carte graphique ^ Son ^ Wifi ^ Bluetooth ^ Webcam ^ Touchpad ^ Raccourcis multimédia ^ Ecran tactile ^ Lecteurs d’empreintes digitales ^ Ecran tactile multipoints^
|  [[:20.04]] avec Kernel 5.11.0 à 5.11.5  |  {{:icons:ok_64.png|OK 64 bits}}   |  {{:icons:ok_64.png|OK 64 bits}}   |  {{wiki:modeles:laptop_work.png|Fonctionne après config}}  |  {{:icons:ok_64.png|OK 64 bits}}   |  {{:icons:ok_64.png|OK 64 bits}}   |   {{:icons:ok_64.png|OK 64 bits}}  |   {{:icons:ok_64.png|OK 64 bits}}  |   {{:icons:ok_64.png|OK 64 bits}}  |  {{:icons:ok_64.png|OK 64 bits}}   | {{wiki:modeles:laptop_notok.png|Ne fonctionne pas}} | {{wiki:modeles:laptop_work.png|Fonctionne après config}} |
|  [[:21.04]] Live USB  |  {{:icons:ok_64.png|OK 64 bits}}   |  {{:icons:ok_64.png|OK 64 bits}}   |  {{wiki:modeles:laptop_work.png|Fonctionne après config}}  |  {{:icons:ok_64.png|OK 64 bits}}   |  {{:icons:ok_64.png|OK 64 bits}}   |   {{:icons:ok_64.png|OK 64 bits}}  |   {{:icons:ok_64.png|OK 64 bits}}  |   {{:icons:ok_64.png|OK 64 bits}}  |  {{:icons:ok_64.png|OK 64 bits}}   | {{wiki:modeles:laptop_notok.png|Ne fonctionne pas}} | {{wiki:modeles:laptop_work.png|Fonctionne après config}} |

<note tip>Infos : Les modifications pour le son et le S3, n'ont pas pu être testé sur le 21.04 live USB, mais doivent fonctionner. Le son fonctionne avec le jack, sans rien modifier.</note> 

<note important>Sous Ubuntu 20.04 avant le kernel 5.11 il était nécessaire de rajouter initcall_blacklist=elants_i2c_driver_init dans /etc/default/grub pour avoir le tactile fonctionnel.</note>

**Utilisateurs du Wiki possédant cet ordinateur, fonctionnel :**
  * **[[:utilisateurs:DavidLenovo]]** : [[:20.04]]

**Cet ordinateur portable n'est à priori pas [[:pc_tatoué|tatoué]].**

===== Installation =====
Pour démarrer sur le BIOS, il faut démarrer l'ordinateur et appuyer sur F2, on peut aussi utiliser le boot menu sur F12.\\
Il y a un mini BIOS, on n'a malheureusement pas accès à grand chose.

Il est possible de garder Windows en plus d'Ubuntu.

===== Post-Installation =====
==== Kernel 5.11 ====
Il faut installer le kernel 5.11 pour avoir un fonctionnement complet du PC.\\
Les kernels après 5.11.5 ne fonctionnent plus chez moi sur Ubuntu 20.04 (dernier testé 5.11.16).\\
\\
<note tip>Il faudrait voir pour prendre la mainline kernel d'Ubuntu 21.04 pour ne pas avoir à faire les mise à jour à la main</note>
\\
[[https://ubuntuhandbook.org/index.php/2021/02/linux-kernel-5-11released-install-ubuntu-linux-mint/|Tutoriel]] - [[https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/|Dépot 5.11.5]]\\
Je recommande de télecharger :
<code>
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-headers-5.11.5-051105-generic_5.11.5-051105.202103091130_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-headers-5.11.5-051105_5.11.5-051105.202103091130_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-image-unsigned-5.11.5-051105-generic_5.11.5-051105.202103091130_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-modules-5.11.5-051105-generic_5.11.5-051105.202103091130_amd64.deb
</code>
Et d'installer :
<code>
sudo dpkg -i *.deb
</code>
\\
**Il faut désactiver le secure boot**\\
Aller dans le BIOS en appuyant (une ou plusieurs fois) sur F2 au démarrage, tout de suite après l'appuie sur power ou le redémarrage.\\
Il y a une option Secure Boot, la mettre sur disable.\\
Ceci à cause de ces noyaux (kernel) qui ne sont pas signés.\\
\\
Rebooter et verifier : 
<code>
uname -r
</code>
==== Son ====
Depuis le kernel 5.11.0 (jusqu’à 5.11.5) la carte son fonctionne, et n'a pas une sortie fictive ou dummy output.\\
Mais fonctionne qu'avec le jack et un casque ou headphone.
\\
Si vous avez une sortie fictive vérifiez aussi les drivers utilisés, avec la commande : \\
<code>aplay -l</code>\\
Vous devez avoir quelques chose qui commence par :\\
<code>**** Liste des Périphériques Matériels PLAYBACK ****
carte 0: sofhdadsp [sof-hda-dsp], périphérique 0: HDA Analog (*) []</code>
\\
La commande : \\
<code>sudo dmesg | grep -i audio</code>
Doit afficher des ligne contenant : sof-audio-pci \\
\\
J'ai fait pas mal de modification, et je ne sais plus si sur Ubuntu 20.04, il faut forcer le driver sof-hda-dsp ou si cela est automatique.\\
Sur Ubuntu 21.04 aucune modification à faire pour avoir une sortie réelle et le fonctionnement du jack.\\

=== Haut-parleur (speakers) ===
Beaucoup de portable Lenovo (et d'autres marque aussi) avec le chipset ALC287 n'ont pas de sons sur les haut-parleurs.\\
Sur un pc avec un BIOS non restreint, en modifiant l'option S3 qui est désactivé pour Windows, cela devrait fonctionner facilement. Sur celui-ci il faut faire les modifications à la main.\\
\\
Pour fonctionner avec les haut-parleurs (speakers) il faut :\\
* Activer le mode S3 (voir plus bas)\\
* Vérifier qu'il est bien activé\\
* Lancer une musique sur VLC par exemple, laisser jouer, passer en veille (suspend-to-RAM), sortir de la veille, et le son fonctionne sur les hauts-parleur (speakers).
Si pas de son lu pendant 7 secondes, le son ne fonctionnera plus, il faudra alors remettre en veille.\\
\\
Il y a un script sur la [[https://wiki.archlinux.org/title/Lenovo_Yoga_7i#Speaker_audio|page de tutoriel]], mais nous sommes plusieurs à ne pas avoir un fonctionnement concluant.
<note>-> En édition</note>

==== Gestion d'énergie / Mode S3 / Deep ====
Par défaut, pour l'autre OS, le mode S3 est désactivé dans le BIOS, vu que le BIOS est bridé (on a accès a presque rien), on ne peut pas le réactiver.\\
Il faut le modifier dans Ubuntu.\\
Le mode S3 est bien plus performant pour le passage en veille, que le s2idle activé par défaut.\\
Par exemple environ 10h de veille (dans la ram) consome 6% de batterie et ne chauffe pas contrairement au triple (de mémoire) et à un échauffement important en mode S2.\\
\\
Le mode S3 est obligatoire pour avec le son avec les haut-parleurs.\\

=== Vérifier si le S3 est bien activé ===
Tapez :
<code>cat /sys/power/mem_sleep</code>
"S2idle [deep]" doit apparaitre\\
Si il y a juste "[s2idle]" il est désactivé.\\
\\
Puis :\\
<code>sudo dmesg |grep ACPI|grep supports</code>\\
Vous devriez avoir :\\
<code>[    0.195933] ACPI: (supports S0 S3 S4 S5)</code>\\
Si S3 n’apparaît pas il n'est pas activé.\\

=== Activer le mode S3 ===
Cette procédure est différente pour les autres modèles.\\
Il faut suivre la [[https://wiki.archlinux.org/title/Lenovo_Yoga_7i#Activating_S3_sleep|procédure ici]], la voici en simplifié :\\
1) Installer iasl (Intel's compiler/decompiler for ACPI machine language) and cpio
<code>sudo apt-get install acpica-tools cpio</code>
2) on crée un dossier acpi : mkdir acpi\\
3) on fait un dump de la table ACPI DSDT \\
<code>sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.aml</code>
4) On décompile le dump qui va generé un .dsl basé sur le .aml ACPI \\
<code>iasl -d dsdt.aml</code>
5) on crée notre patch pour notre Yoga 7i : (C'est cette étape qui est propre au matériel)\\
<code>nano acpi.patch</code>
On met :
<code>
--- dsdt.dsl~
+++ dsdt.dsl
@@ -18,7 +18,7 @@
  *     Compiler ID      "INTL"
  *     Compiler Version 0x20210105 (539033861)
  */
-DefinitionBlock ("", "DSDT", 2, "LENOVO", "CB-01   ", 0x00000002)
+DefinitionBlock ("", "DSDT", 2, "LENOVO", "CB-01   ", 0x00000003)
 {
     External (_GPE.AL6F, MethodObj)    // 0 Arguments
     External (_GPE.P0L6, MethodObj)    // 0 Arguments
@@ -516,7 +516,7 @@

     Name (SS1, Zero)
     Name (SS2, Zero)
-    Name (SS3, Zero)
+    Name (SS3, One)
     Name (SS4, One)
     OperationRegion (GNVS, SystemMemory, 0x45AB8018, 0x0A9B)
     Field (GNVS, AnyAcc, Lock, Preserve)
</code>
On sauvegarde\\
6) On applique le patch : 
<code>patch --verbose < acpi.patch</code>
Il doit y avoir un message "2 Hunk ok", ou quelque chose comme cela. Testé sur Ubuntu 20.04.\\
7) On recompile notre version patché du .dsl
<code>iasl -ve -tc dsdt.dsl</code>
8) On crée une archive CPIO avec la structure correct, qui permetra à GRUB de le démarrer au boot.\\
Nous appelerons l'image finale acpi_override et la copions dans /boot/: \\
<code>mkdir -p kernel/firmware/acpi
cp dsdt.aml kernel/firmware/acpi
find kernel | cpio -H newc --create > acpi_override
sudo cp acpi_override /boot
</code>
9) GRUB doit être paramétré : 
<code>sudo nano /etc/default/grub</code>
Chercher et remplacer les lignes suivante :\\
<code> GRUB_CMDLINE_LINUX_DEFAULT="mem_sleep_default=deep"
 GRUB_EARLY_INITRD_LINUX_CUSTOM="/boot/acpi_override"
</code>
Note : il est possible de garder d'autres parametre dans GRUB_CMDLINE_LINUX_DEFAULT il faut mettre un espace entre chaque.\\
10) Il faut regenerer la config de GRUB :\\
<code>sudo update-grub</code>
**Ici 2 options : soit GRUB genere la config avec initrd /boot/acpi_override (on le vois apparaitre), soit non (ce qui est mon cas sous Ubuntu 20.04)** 
Si il est apparu on passe à l'étape 12, sinon la 11\\
11) Il faut que GRUB charge notre nouvelle table DSDT, il faut éditer (en root) /boot/grub/grub.cfg en graphique ou :\\
<code>sudo nano /boot/grub/grub.cfg</code>
Il faut modifier chaque ligne initrd pour avoir /boot/acpi_override avant l'image noyau, donc pour chaque version du noyau\\
Exemple :
<code>initrd /boot/initrd.img-5.11.5-051105-generic</code>
Devient :
<code>initrd /boot/acpi_override /boot/initrd.img-5.11.5-051105-generic</code>
\\
<note important>Ceci est à perfectionner, puisque a chaque mise à jour de noyau, il faudra refaire la manipulation</note>

12) Redemarer et verifier si cela fonctionne :
<code>sudo dmesg |grep ACPI|grep supports</code>\\
Vous devriez avoir :\\
<code>[    0.195933] ACPI: (supports S0 S3 S4 S5)</code>\\
Si S3 n’apparaît pas il n'est pas activé.\\
\\
Puis : \\
<code>cat /sys/power/mem_sleep</sleep></code>
"S2idle [deep]" doit apparaitre\\
Si il y a juste "[s2idle]" il est désactivé.\\
\\
**C'est l'élement qui me semble compliqué, on peut vérifier (si ca ne fonctionne pas) avec :**
<code>sudo dmesg</code>
On doit avoir : <code>[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.11.5-051105-generic root=(l'emplacement de votre Ubuntu) ro mem_sleep_default=deep</code>
Il doit y avoir aussi une ligne <code>ACPI: DSDT 0x.... ... (v02 LENOVO CB-01    00000003 INTL ...)</code>
Il faut avoir le 3 avant INTL (par défaut c'est à 2 avant la modif que l'on viens de faire)\\
Bien verifier si il y a eu des erreurs, et si on a bien remplacer toutes les lignes initrd.\\
\\
==== Touches raccourcis réglage luminosité (hotkeys brightness) ====
Les touches fonctionnent uniquement après une mise en veille vers la ram (suspend-to-RAM), avec le noyau 5.11.5, cela fonctionnais mal ou pas avec des noyaux précédent (peut être les 5.8).\\
Certains parlent d'options dans /etc/default/grub, j'ai fait quelques test non concluant, peut-être une piste a creuser avec : acpi_backlight=none\\

==== Pavé tactile ====

Vous pouvez consulter la page consacrée au [[:touchpad|pavé tactile]] //(touchpad)// pour savoir comment utiliser toutes ses possibilités (ascenseur vertical, ascenseur horizontal, ...).\\
**Le Touchpad présente souvent le défaut suivant : lorsqu'on tape au clavier, on clique sans le vouloir avec la paume. Consultez [[:touchpad#problemes_de_contact_de_paume|ce paragraphe]] pour corriger ce défaut.**\\
<note>Je n'ai pas constaté ce problème</note>

==== Ecran Tactile ====
=== Multitouch ===
Si le multitouch ne fonctionne pas immédiatement après l'installation, installez ces paquets:
<code>sudo apt-get install xserver-xorg-input-evdev touchegg</code>

Pour tester si cela fonctionne, tapez "touchegg" dans un terminal et essayez de "scroller" avec deux doigts dans une autre application avec un ascenseur.\\
Si ça fonctionne, vous devrez ajouter touchegg dans vos [[tutoriel:application_demarrage|programmes au démarrage de session]].\\
<note tip>Il est possible de faire des fonctions à 3/4 doigts [[https://askubuntu.com/questions/808214/ubuntu-16-04-lenovo-yoga-2-pro-touchpad-3-4-finger-swipe|voir ici]] (non testé)</note>

=== Avec plusieurs écrans ===
<note>-> A vérifier</note>
Si vous avez un second écran branché, vous vous apercevrez que le touchscreen ne fonctionne pas comme vous l'attendez probablement : toucher un point sur l'écran ne clique pas en ce point : l'écran tactile couvre la surface totale des deux écrans, et pas seulement la sienne.

Essayez la commande suivante:
<code>xinput --map-to-output "ELAN Touchscreen" eDP1</code>
Si ça fonctionne bien pour vous, ajoutez cette commande aux [[tutoriel:application_demarrage|programmes au démarrage de votre session]] 

==== Mode tablette : désactiver le clavier et le touchpad ====
Un capteur détecte le passage en mode retourné ou tablette et désactive le touchpad (sur Plasma et Mate).
Sur certains environnement de bureau, l'écran est automatiquement retourné (en plus du touchpad désactivé), c'est le cas de :
  * L’environnement de bureau Ubuntu
  * L’environnement de bureau Ubuntu sur Wayland
  * L’environnement de bureau Cynamon, par contre le tactile considère que l'écran est dans le même sens.

Grouar propose des scripts dans [[https://doc.ubuntu-fr.org/lenovo_yoga_2_pro#mode_tablettedesactiver_le_clavier_et_le_touchpad|sont tuto pour Yoga 2 Pro]]
<note>-> A tester</note>
Voici un script bash qui permet de basculer entre le mode tablette (clavier et touchpad désactivés) et le mode laptop :

<code bash>#!/bin/bash

# you can find touchpad and keyboard labels with the command xinput --list
TOUCHPAD_LABEL="SynPS/2 Synaptics TouchPad"
KEYBOARD_LABEL="AT Translated Set 2 keyboard"

STATUS_ON=1
STATUS_OFF=0

function getStatus {
    # first argument is device id or device name
    status=$(xinput --list-props "$1" | grep "[^\"]Device Enabled.*" | grep -o "[01]$")
    echo $status
}

function setStatus {
    xinput set-int-prop "$1" "Device Enabled" 8 $2
}


tp_status=$(getStatus "$TOUCHPAD_LABEL")
kb_status=$(getStatus "$KEYBOARD_LABEL")

if [[ $tp_status == $STATUS_ON ]] && [[ $kb_status == $STATUS_ON ]]
then
    #kdialog --passivepopup 'Keyboard and touchpad disabled' 3 # uncomment if you use kde and want notifications
    setStatus "$TOUCHPAD_LABEL" $STATUS_OFF
    setStatus "$KEYBOARD_LABEL" $STATUS_OFF
else
    #kdialog --passivepopup 'Keyboard and touchpad enabled' 3 # uncomment if you use kde and want notifications
    setStatus "$TOUCHPAD_LABEL" $STATUS_ON
    setStatus "$KEYBOARD_LABEL" $STATUS_ON
fi</code>

Je l'utilise avec un fichier .desktop placé dans ~/.local/share/applications dont le contenu est le suivant : 
<code>[Desktop Entry]
Encoding=UTF-8
Name=Toggle Tablet
Comment=Toggle keyboard and touchpad
Exec=~/scripts/toggletablet.sh
Icon=preferences-desktop-display
Type=Application 
</code>
Ce qui permet de lancer le script via le menu (dans mon cas, Homerun dans KDE)
<note help>Dans mon cas, le script toggletablet.sh est placé dans un dossier script dans /home/grou, à vous d'adapter la ligne Exec à votre installation.</note>

==== Mode tablette : retourner l'écran ====
<note>-> A tester</note>
Un autre script pour alterner entre trois orientations d'écran :

<code bash>#!/bin/sh
# Switch between 3 orientations
state=$(xrandr -q|grep eDP1|cut -d' ' -f5)
case $state in
    inverted)
	xrandr -o normal
	xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
	xinput enable 'SynPS/2 Synaptics TouchPad'
	;;
    right)
	xrandr -o inverted
	xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
	xinput disable 'SynPS/2 Synaptics TouchPad'
	;;
    *)
	xrandr --screen 0 -o right
	xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
	xinput disable 'SynPS/2 Synaptics TouchPad'
	;;
esac</code>
===== Sources =====

  * (en) [[https://wiki.archlinux.org/title/Lenovo_Yoga_7i#Activating_S3_sleep|Activation S3 Yoga 7i - ArchLinux]]
  * (en) [[http://askubuntu.com/questions/367963/ubuntu-on-lenovo-yoga-2-pro|Ask Ubuntu]] 
  * (en) [[https://wiki.archlinux.org/index.php/Touchscreen#Using_a_touchscreen_in_a_multi-head_setup|Documentation ArchLinux]]
  * (fr) [[https://doc.ubuntu-fr.org/lenovo_yoga_2_pro|Tuto sur le Yoga 2 pro]]
  * (en) [[https://askubuntu.com/questions/808214/ubuntu-16-04-lenovo-yoga-2-pro-touchpad-3-4-finger-swipe|Lenovo Yoga 2 Pro Touchpad 3/4 finger swipe]]
  * (en) [[https://ubuntuhandbook.org/index.php/2021/02/linux-kernel-5-11released-install-ubuntu-linux-mint/|Kernel 5.11]]
----

//Contributeurs : Pour la base issu de lenovo_yoga_2_pro [[:utilisateurs:grouar]], pour le Yoga 7 : [[:utilisateurs:DavidLenovo]]//